package main

import "fmt"

/*
给你一个 m x n 的矩阵，最开始的时候，每个单元格中的值都是 0。

另有一个二维索引数组 indices，indices[i] = [ri, ci] 指向矩阵中的某个位置，
其中 ri 和 ci 分别表示指定的行和列（从 0 开始编号）。

对 indices[i] 所指向的每个位置，应同时执行下述增量操作：

ri 行上的所有单元格，加 1 。
ci 列上的所有单元格，加 1 。
给你 m、n 和 indices 。请你在执行完所有 indices 指定的增量操作后，返回矩阵中 奇数值单元格 的数目。
*/

// 模拟
// 计算某单元格的数值，需要判断和它同行的有几个  同列的有几个
func oddCells(m int, n int, indices [][]int) int {
	mRow := make(map[int]int)
	mCol := make(map[int]int)
	for _, v := range indices {
		ri, ci := v[0], v[1]
		mRow[ri]++
		mCol[ci]++
	}
	res := 0
	for i := 0; i < m; i++ {
		for j := 0; j < n; j++ {
			if (mRow[i]+mCol[j])%2 == 1 {
				res++
			}
		}
	}
	return res
}

type args struct {
	m,n int
	indices [][]int
	res int
}
func main() {
	fmt.Println("hello")
	// m = 2, n = 3, indices = [[0,1],[1,1]]
	test := []args{
		{
			2,3,[][]int{{0,1},{1,1}},6,
		},
		{
			2,2,[][]int{{1,1,},{0,0}},0,
		},
	}
	for _,v := range test {
		res := oddCells(v.m,v.n,v.indices)
		if res == v.res {
			continue
		}else{
			fmt.Println("err")
		}
	}
}
